@不喜丶不悲
3年前 提问
1个回答
Scapy 怎么定制 tcp 协议 syn 请求
安全小白成长记
3年前
Scapy使用TCP的方法:1. 使用内核的TCP堆栈;2. Scapy的TCP客户端自动机;3. 使用外部项目。
Scapy简介
Scapy的是一个强大的交互式数据包处理程序(使用python编写)。它能够伪造或解码大量的网络协议数据包,能够发送,捕获,匹配请求和回复包等等。它可以很容易地处理一些典型操作,例如端口扫描,tracerouting,探测,单元测试,攻击或网络发现(可替代hping,NMAP,arpspoof,ARP-SK,arping,tcpdump,tereal,P0F等)的特性-发送无效数据帧,注入修改的802.11数据帧,在WEP上解码加密通道(VOIP),ARP缓存攻击(VLAN)等,这也是其他工具无法处理完成的。
Scapy使用TCP的方法
- 使用内核的TCP堆栈
Scapy提供了一个StreamSocket
对象,该对象可以将简单的套接字转换为适合与sr()
命令系列一起使用的Scapy超级套接字。
s=socket.socket()
s.connect(("www.test.com",80))
ss=StreamSocket(s,Raw)
ss.sr1(Raw("GET /\r\n"))
Begin emission:
Finished to send 1 packets.
*
Received 1 packets, got 1 answers, remaining 0 packets
<Raw load='<html>\r\n<head> ... >
使用内核的TCP堆栈意味着您将依赖于本地防火墙的规则和内核的路由表。
- Scapy的TCP客户端自动机
Scapy提供了一个简单的TCP客户端自动机(没有重新传输,没有SAck,没有时间戳等)。Automata可以以超级套接字的形式提供输入和输出。
这是使用Scapy的TCP客户端自动机的方法(至少需要Scapy v2.1.1)。
笔记
s = TCP_client.tcplink(Raw, "www.test.com", 80)
s.send("GET /\r\n")
7
s.recv()
<Raw load='<html>\r\n<head> ... >
笔记
专门用于HTTP,您可以传递
HTTP
而不是Raw
。
- 使用外部项目
muXTCP-编写自己的灵活的Userland TCP / IP堆栈- Ninja 风格!!!
整合pynids